package com.auntvt.timo.jpax.springbootstarter.utils;

import com.auntvt.timo.jpax.core.exception.JpaxException;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;

/**
 * 用于检查数据，重写Spring Assert工具部分方法，用法一样
 *
 * @author 小懒虫 <auntvt@163.com>
 * @date 2021/5/27
 */
public class AssertUtil {

    /**
     * 检查对象不为空
     *
     * @param object 检查对象
     */
    public static void notNull(@Nullable Object object) {
        try {
            Assert.notNull(object);
        } catch (RuntimeException e) {
            throw new JpaxException(e.getMessage());
        }
    }

    /**
     * 检查对象不为空
     *
     * @param object    检查对象
     * @param message   异常提示信息
     * @param arguments 字符串format格式化参数
     */
    public static void notNull(@Nullable Object object, String message, Object... arguments) {
        if (object == null) {
            throw new JpaxException(message, arguments);
        }
    }

    /**
     * 检查对象为空
     *
     * @param object    检查对象
     */
    public static void isNull(@Nullable Object object) {
        try {
            Assert.isNull(object);
        } catch (RuntimeException e) {
            throw new JpaxException(e.getMessage());
        }
    }

    /**
     * 检查对象为空
     *
     * @param object    检查对象
     * @param message   异常提示信息
     * @param arguments 字符串format格式化参数
     */
    public static void isNull(@Nullable Object object, String message, Object... arguments) {
        if (object != null) {
            throw new JpaxException(message, arguments);
        }
    }
}
